home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Technology Seed / Jan. '98 ATS.toast / NavServices1.0b3 / Navigation Services SDK / Interfaces / PInterfaces / Navigation.p
Encoding:
Text File  |  1998-01-12  |  16.1 KB  |  424 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        Navigation.p
  3.  
  4.      Contains:    Pascal Interface to the Navigation Services SDK
  5.  
  6.      Version:    Technology:    Navigation Services 1.0
  7.                  Release:    To be used with Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1997-98 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT Navigation.t;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __NAVIGATION__}
  28. {$SETC __NAVIGATION__ := 1}
  29.  
  30. {$I+}
  31. {$SETC Navigation.tIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __TYPES__}
  35. {$I Types.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __APPLEEVENTS__}
  38. {$I AppleEvents.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __TRANSLATION__}
  41. {$I Translation.p}
  42. {$ENDC}
  43. {$IFC UNDEFINED __WINDOWS__}
  44. {$I Windows.p}
  45. {$ENDC}
  46. {$IFC UNDEFINED __CODEFRAGMENTS__}
  47. {$I CodeFragments.p}
  48. {$ENDC}
  49.  
  50.  
  51.  
  52. {$PUSH}
  53. {$ALIGN MAC68K}
  54. {$LibExport+}
  55.  
  56.  
  57. CONST
  58.     kNavMissingKindStringErr    = -5699;
  59.     kNavInvalidCustomControlMessageErr = -5698;
  60.     kNavCustomControlMessageFailedErr = -5697;
  61.     kNavInvalidSystemConfigErr    = -5696;
  62.  
  63.  
  64.     kNavDialogOptionsVersion    = 0;
  65.     kNavReplyRecordVersion        = 0;
  66.     kNavCBRecVersion            = 0;
  67.     kNavFileOrFolderVersion        = 0;
  68.     kNavMenuItemSpecVersion        = 0;
  69.  
  70.  
  71. TYPE
  72.     NavDataVersion                        = UInt16;
  73.  
  74. CONST
  75.                                                                 {  input action codes for NavAskSaveChanges()  }
  76.     kNavSaveChangesClosingDocument = 1;
  77.     kNavSaveChangesQuittingApplication = 2;
  78.     kNavSaveChangesOther        = 0;
  79.  
  80.  
  81. TYPE
  82.     NavAskSaveChangesAction                = UInt32;
  83.  
  84. CONST
  85.                                                                 {  result codes for NavAskSaveChanges()  }
  86.     kNavAskSaveChangesSave        = 1;
  87.     kNavAskSaveChangesCancel    = 2;
  88.     kNavAskSaveChangesDontSave    = 3;
  89.  
  90.  
  91. TYPE
  92.     NavAskSaveChangesResult                = UInt32;
  93.  
  94. CONST
  95.                                                                 {  result codes for NavAskDiscardChanges()  }
  96.     kNavAskDiscardChanges        = 1;
  97.     kNavAskDiscardChangesCancel    = 2;
  98.  
  99.  
  100. TYPE
  101.     NavAskDiscardChangesResult            = UInt32;
  102.  
  103. CONST
  104.                                                                 {  which elements are being filtered for objects:  }
  105.     kNavFilteringBrowserList    = 0;
  106.     kNavFilteringFavorites        = 1;
  107.     kNavFilteringRecents        = 2;
  108.     kNavFilteringShortCutVolumes = 3;
  109.  
  110.  
  111. TYPE
  112.     NavFilterModes                        = INTEGER;
  113.     NavFileInfoPtr = ^NavFileInfo;
  114.     NavFileInfo = RECORD
  115.         locked:                    BOOLEAN;                                {  file is locked  }
  116.         resourceOpen:            BOOLEAN;                                {  resource fork is opened  }
  117.         dataOpen:                BOOLEAN;                                {  data fork is opened  }
  118.         reserved:                BOOLEAN;
  119.         dataSize:                UInt32;                                    {  size of the data fork  }
  120.         resourceSize:            UInt32;                                    {  size of the resource fork  }
  121.         finderInfo:                FInfo;                                    {  more file info:  }
  122.         moreFinderInfo:            FXInfo;
  123.         reserved2:                PACKED ARRAY [0..211] OF CHAR;
  124.     END;
  125.  
  126.     NavFolderInfoPtr = ^NavFolderInfo;
  127.     NavFolderInfo = RECORD
  128.         shareable:                BOOLEAN;
  129.         sharePoint:                BOOLEAN;
  130.         mounted:                BOOLEAN;
  131.         readable:                BOOLEAN;
  132.         writeable:                BOOLEAN;
  133.         reserved:                BOOLEAN;
  134.         numberOfFiles:            UInt32;
  135.         finderInfo:                DInfo;
  136.         moreFinderInfo:            DXInfo;
  137.         reserved2:                PACKED ARRAY [0..213] OF CHAR;
  138.     END;
  139.  
  140.     NavFileFolderInfoPtr = ^NavFileFolderInfo;
  141.     NavFileFolderInfo = RECORD
  142.         CASE INTEGER OF
  143.         0: (
  144.             fileInfo:            NavFileInfo;
  145.             );
  146.         1: (
  147.             folderInfo:            NavFolderInfo;
  148.             );
  149.     END;
  150.  
  151.     NavFileOrFolderInfoPtr = ^NavFileOrFolderInfo;
  152.     NavFileOrFolderInfo = RECORD
  153.         version:                UInt16;
  154.         isFolder:                BOOLEAN;
  155.         visible:                BOOLEAN;
  156.         creationDate:            UInt32;
  157.         modificationDate:        UInt32;
  158.         fileAndFolder:            NavFileFolderInfo;
  159.     END;
  160.  
  161.     NavEventDataInfoPtr = ^NavEventDataInfo;
  162.     NavEventDataInfo = RECORD
  163.         CASE INTEGER OF
  164.         0: (
  165.             event:                EventRecordPtr;                            {  for event processing  }
  166.             );
  167.         1: (
  168.             param:                Ptr;                                    {  points to event specific data  }
  169.             );
  170.     END;
  171.  
  172.     NavContext                            = UInt32;
  173.     NavCBRecPtr = ^NavCBRec;
  174.     NavCBRec = RECORD
  175.         version:                UInt16;
  176.         context:                NavContext;                                {  used by customization code to call Navigation Services  }
  177.         window:                    WindowPtr;                                {  the dialog  }
  178.         customRect:                Rect;                                    {  local coordinate rectangle of customization area  }
  179.         previewRect:            Rect;                                    {  local coordinate rectangle of the preview area  }
  180.         eventData:                NavEventDataInfo;
  181.         reserved:                PACKED ARRAY [0..225] OF CHAR;
  182.     END;
  183.  
  184.  
  185. CONST
  186.     kNavCBEvent                    = 0;                            {  an event has occurred (update, idle events, etc.)  }
  187.     kNavCBCustomize                = 1;                            {  protocol for negotiating customization space  }
  188.     kNavCBStart                    = 2;                            {  the navigation dialog is starting up  }
  189.     kNavCBTerminate                = 3;                            {  the navigation dialog is closing down  }
  190.     kNavCBAdjustRect            = 4;                            {  the navigation dialog is being resized  }
  191.     kNavCBNewLocation            = 5;                            {  user has chosen a new location in the browser  }
  192.     kNavCBShowDesktop            = 6;                            {  user has navigated to the desktop  }
  193.     kNavCBSelectEntry            = 7;                            {  user has made a selection in the browser  }
  194.     kNavCBPopupMenuSelect        = 8;                            {  signifies that a popup menu selection was made  }
  195.     kNavCBAccept                = 9;                            {  user has accepted the navigation dialog  }
  196.     kNavCBCancel                = 10;                            {  user has cancelled the navigation dialog  }
  197.     kNavCBAdjustPreview            = 11;                            {  preview button was clicked or the preview was resized  }
  198.  
  199.  
  200. TYPE
  201.     NavEventCallbackMessage                = SInt32;
  202.     NavCallBackUserData                    = UInt32;
  203. { for events and customization: }
  204. {$IFC TYPED_FUNCTION_POINTERS}
  205.     NavEventProcPtr = PROCEDURE(callBackSelector: NavEventCallbackMessage; callBackParms: NavCBRecPtr; callBackUD: NavCallBackUserData);
  206. {$ELSEC}
  207.     NavEventProcPtr = ProcPtr;
  208. {$ENDC}
  209.  
  210. { for preview support: }
  211. {$IFC TYPED_FUNCTION_POINTERS}
  212.     NavPreviewProcPtr = FUNCTION(callBackParms: NavCBRecPtr; callBackUD: NavCallBackUserData): BOOLEAN;
  213. {$ELSEC}
  214.     NavPreviewProcPtr = ProcPtr;
  215. {$ENDC}
  216.  
  217. { filtering callback information: }
  218. {$IFC TYPED_FUNCTION_POINTERS}
  219.     NavObjectFilterProcPtr = FUNCTION(VAR theItem: AEDesc; info: UNIV Ptr; callBackUD: NavCallBackUserData; filterMode: NavFilterModes): BOOLEAN;
  220. {$ELSEC}
  221.     NavObjectFilterProcPtr = ProcPtr;
  222. {$ENDC}
  223.  
  224.     NavEventUPP = UniversalProcPtr;
  225.     NavPreviewUPP = UniversalProcPtr;
  226.     NavObjectFilterUPP = UniversalProcPtr;
  227.  
  228. CONST
  229.     uppNavEventProcInfo = $00000FC0;
  230.     uppNavPreviewProcInfo = $000003D0;
  231.     uppNavObjectFilterProcInfo = $00002FD0;
  232.  
  233. FUNCTION NewNavEventProc(userRoutine: NavEventProcPtr): NavEventUPP;
  234.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  235.     INLINE $2E9F;
  236.     {$ENDC}
  237.  
  238. FUNCTION NewNavPreviewProc(userRoutine: NavPreviewProcPtr): NavPreviewUPP;
  239.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  240.     INLINE $2E9F;
  241.     {$ENDC}
  242.  
  243. FUNCTION NewNavObjectFilterProc(userRoutine: NavObjectFilterProcPtr): NavObjectFilterUPP;
  244.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  245.     INLINE $2E9F;
  246.     {$ENDC}
  247.  
  248. PROCEDURE CallNavEventProc(callBackSelector: NavEventCallbackMessage; callBackParms: NavCBRecPtr; callBackUD: NavCallBackUserData; userRoutine: NavEventUPP);
  249.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  250.     INLINE $205F, $4E90;
  251.     {$ENDC}
  252.  
  253. FUNCTION CallNavPreviewProc(callBackParms: NavCBRecPtr; callBackUD: NavCallBackUserData; userRoutine: NavPreviewUPP): BOOLEAN;
  254.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  255.     INLINE $205F, $4E90;
  256.     {$ENDC}
  257.  
  258. FUNCTION CallNavObjectFilterProc(VAR theItem: AEDesc; info: UNIV Ptr; callBackUD: NavCallBackUserData; filterMode: NavFilterModes; userRoutine: NavObjectFilterUPP): BOOLEAN;
  259.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  260.     INLINE $205F, $4E90;
  261.     {$ENDC}
  262.  
  263. CONST
  264.     kNavCtlShowDesktop            = 0;                            {     show desktop,                 parms = nil  }
  265.     kNavCtlSortBy                = 1;                            {     sort key field,             parms->NavSortKeyField  }
  266.     kNavCtlSortOrder            = 2;                            {     sort order,                    parms->NavSortOrder  }
  267.     kNavCtlScrollHome            = 3;                            {     scroll list home,            parms = nil  }
  268.     kNavCtlScrollEnd            = 4;                            {     scroll list end,            parms = nil  }
  269.     kNavCtlPageUp                = 5;                            {     page list up,                parms = nil  }
  270.     kNavCtlPageDown                = 6;                            {     page list down,                parms = nil  }
  271.     kNavCtlGetLocation            = 7;                            {     get current location,        parms<-AEDesc  }
  272.     kNavCtlSetLocation            = 8;                            {     set current location,        parms->AEDesc  }
  273.     kNavCtlGetSelection            = 9;                            {     get current selection,        parms<-AEDescList  }
  274.     kNavCtlSetSelection            = 10;                            {     set current selection,        parms->AEDescList  }
  275.     kNavCtlShowSelection        = 11;                            {     make selection visible,        parms = nil  }
  276.     kNavCtlOpenSelection        = 12;                            {     open view of selection,        parms = nil  }
  277.     kNavCtlEjectVolume            = 13;                            {     eject volume,                parms->vRefNum  }
  278.     kNavCtlNewFolder            = 14;                            {     create a new folder,        parms->StringPtr  }
  279.     kNavCtlCancel                = 15;                            {     cancel dialog,                parms = nil  }
  280.     kNavCtlAccept                = 16;                            {     accept dialog default,        parms = nil  }
  281.     kNavCtlIsPreviewShowing        = 17;                            {     query preview status,        parms<-Boolean  }
  282.     kNavCtlAddControl            = 18;                            {   add one control to dialog,    parms->ControlHandle  }
  283.     kNavCtlAddControlList        = 19;                            {     add control list to dialog,    parms->Handle (DITL rsrc)  }
  284.     kNavCtlGetFirstControlID    = 20;                            {     get 1st control ID,            parms<-UInt16  }
  285.     kNavCtlSelectCustomType        = 21;                            {     select a custom menu item    parms->NavMenuItemSpec  }
  286.     kNavCtlSelectAllType        = 22;                            {   select an "All" menu item    parms->SInt16  }
  287.     kNavCtlGetEditFileName        = 23;                            {     get save dialog's file name    parms<-StringPtr  }
  288.     kNavCtlSetEditFileName        = 24;                            {     set save dialog's file name    parms->StringPtr  }
  289.  
  290.  
  291. TYPE
  292.     NavCustomControlMessage                = SInt32;
  293.  
  294. CONST
  295.     kNavAllKnownFiles            = 0;
  296.     kNavAllReadableFiles        = 1;
  297.     kNavAllFiles                = 2;
  298.  
  299.  
  300. TYPE
  301.     NavPopupMenuItem                    = UInt16;
  302.  
  303. CONST
  304.     kNavSortNameField            = 0;
  305.     kNavSortDateField            = 1;
  306.  
  307.  
  308. TYPE
  309.     NavSortKeyField                        = UInt16;
  310.  
  311. CONST
  312.     kNavSortAscending            = 0;
  313.     kNavSortDescending            = 1;
  314.  
  315.  
  316. TYPE
  317.     NavSortOrder                        = UInt16;
  318.  
  319. CONST
  320.     kNavDefaultNavDlogOptions    = $000000E4;                    {  use defaults for all the options  }
  321.     kNavNoTypePopup                = $00000001;                    {  don't show file type/extension popup on Open/Save  }
  322.     kNavDontAutoTranslate        = $00000002;                    {  don't automatically translate on Open  }
  323.     kNavDontAddTranslateItems    = $00000004;                    {  don't add translation choices on Open/Save  }
  324.     kNavExtendPopup                = $00000008;                    {  extend translation choices on Open/Save  }
  325.     kNavAllFilesInPopup            = $00000010;                    {  "All Files" menu item in the type popup on Open  }
  326.     kNavAllowStationery            = $00000020;                    {  allow saving of stationery files  }
  327.     kNavAllowPreviews            = $00000040;                    {  allow to show previews  }
  328.     kNavAllowMultipleFiles        = $00000080;                    {  allow multiple items to be selected  }
  329.     kNavAllowInvisibleFiles        = $00000100;                    {  allow invisible items to be shown  }
  330.     kNavDontResolveAliases        = $00000200;                    {  don't resolve aliases  }
  331.     kNavSelectDefaultLocation    = $00000400;                    {  make the default location the browser selection  }
  332.  
  333.  
  334. TYPE
  335.     NavDialogOptionFlags                = UInt32;
  336.  
  337. CONST
  338.     kNavTranslateInPlace        = 0;                            {     translate in place, replacing translation source file (default for Save)  }
  339.     kNavTranslateCopy            = 1;                            {     translate to a copy of the source file (default for Open)  }
  340.  
  341.  
  342. TYPE
  343.     NavTranslationOptions                = UInt32;
  344.     NavMenuItemSpecPtr = ^NavMenuItemSpec;
  345.     NavMenuItemSpec = RECORD
  346.         version:                UInt16;
  347.         menuCreator:            OSType;
  348.         menuType:                OSType;
  349.         menuItemName:            Str255;
  350.         reserved:                PACKED ARRAY [0..244] OF CHAR;
  351.     END;
  352.  
  353.     NavMenuItemSpecHandle                = ^NavMenuItemSpecPtr;
  354.     NavTypeListPtr = ^NavTypeList;
  355.     NavTypeList = RECORD
  356.         componentSignature:        OSType;
  357.         reserved:                INTEGER;
  358.         osTypeCount:            INTEGER;
  359.         osType:                    ARRAY [0..0] OF OSType;
  360.     END;
  361.  
  362.     NavTypeListHandle                    = ^NavTypeListPtr;
  363.     NavDialogOptionsPtr = ^NavDialogOptions;
  364.     NavDialogOptions = RECORD
  365.         version:                UInt16;
  366.         dialogOptionFlags:        NavDialogOptionFlags;                    {  option flags for affecting the dialog's behavior  }
  367.         location:                Point;                                    {  top-left location of the dialog, or (-1,-1) for default position  }
  368.         clientName:                Str255;
  369.         windowTitle:            Str255;
  370.         actionButtonLabel:        Str255;                                    {  label of the default button (or null string for default)  }
  371.         cancelButtonLabel:        Str255;                                    {  label of the cancel button (or null string for default)  }
  372.         savedFileName:            Str255;                                    {  default name for text box in NavPutFile (or null string for default)  }
  373.         message:                Str255;                                    {  custom message prompt (or null string for default)  }
  374.         preferenceKey:            UInt32;                                    {  a key for to managing preferences for using multiple utility dialogs  }
  375.         popupExtension:            Handle;                                    {  extended popup menu items, an array of NavMenuItemSpecs  }
  376.         reserved:                PACKED ARRAY [0..493] OF CHAR;
  377.     END;
  378.  
  379. { data returned by the utility dialogs: }
  380.     NavReplyRecordPtr = ^NavReplyRecord;
  381.     NavReplyRecord = RECORD
  382.         version:                UInt16;
  383.         validRecord:            BOOLEAN;                                {  open/save: true if the user confirmed a selection, false on cancel  }
  384.         replacing:                BOOLEAN;                                {  save: true if the user is overwriting an existing object for save  }
  385.         isStationery:            BOOLEAN;                                {  save: true if the user wants to save an object as stationery  }
  386.         translationNeeded:        BOOLEAN;                                {  save: translation is 'needed', open: translation 'has taken place'  }
  387.         selection:                AEDescList;                                {  open/save: list of AppleEvent descriptors of the chosen object(s)  }
  388.         keyScript:                ScriptCode;                                {  open/save: script in which the name of each item in 'selection' is to be displayed  }
  389.         fileTranslation:        ^FileTranslationSpecPtr;                {  open/save: list of file translation specs of the chosen object(s), if translation is needed  }
  390.         reserved1:                UInt32;
  391.         reserved:                PACKED ARRAY [0..230] OF CHAR;
  392.     END;
  393.  
  394. FUNCTION NavLoad: OSErr;
  395. FUNCTION NavUnload: OSErr;
  396. FUNCTION NavLibraryVersion: UInt32;
  397. FUNCTION NavGetDefaultDialogOptions(VAR dialogOptions: NavDialogOptions): OSErr;
  398.  
  399. FUNCTION NavGetFile(VAR defaultLocation: AEDesc; VAR reply: NavReplyRecord; VAR dialogOptions: NavDialogOptions; eventProc: NavEventUPP; previewProc: NavPreviewUPP; filterProc: NavObjectFilterUPP; typeList: NavTypeListHandle; callBackUD: NavCallBackUserData): OSErr;
  400. FUNCTION NavPutFile(VAR defaultLocation: AEDesc; VAR reply: NavReplyRecord; VAR dialogOptions: NavDialogOptions; eventProc: NavEventUPP; fileType: OSType; fileCreator: OSType; callBackUD: NavCallBackUserData): OSErr;
  401. FUNCTION NavAskSaveChanges(VAR dialogOptions: NavDialogOptions; action: NavAskSaveChangesAction; VAR reply: NavAskSaveChangesResult; eventProc: NavEventUPP; callBackUD: NavCallBackUserData): OSErr;
  402. FUNCTION NavCustomAskSaveChanges(VAR dialogOptions: NavDialogOptions; VAR reply: NavAskSaveChangesResult; eventProc: NavEventUPP; callBackUD: NavCallBackUserData): OSErr;
  403. FUNCTION NavAskDiscardChanges(VAR dialogOptions: NavDialogOptions; VAR reply: NavAskDiscardChangesResult; eventProc: NavEventUPP; callBackUD: NavCallBackUserData): OSErr;
  404. FUNCTION NavChooseFile(VAR defaultLocation: AEDesc; VAR reply: NavReplyRecord; VAR dialogOptions: NavDialogOptions; eventProc: NavEventUPP; previewProc: NavPreviewUPP; filterProc: NavObjectFilterUPP; typeList: NavTypeListHandle; callBackUD: NavCallBackUserData): OSErr;
  405. FUNCTION NavChooseFolder(VAR defaultLocation: AEDesc; VAR reply: NavReplyRecord; VAR dialogOptions: NavDialogOptions; eventProc: NavEventUPP; filterProc: NavObjectFilterUPP; callBackUD: NavCallBackUserData): OSErr;
  406. FUNCTION NavChooseVolume(VAR defaultSelection: AEDesc; VAR reply: NavReplyRecord; VAR dialogOptions: NavDialogOptions; eventProc: NavEventUPP; filterProc: NavObjectFilterUPP; callBackUD: NavCallBackUserData): OSErr;
  407. FUNCTION NavChooseObject(VAR defaultLocation: AEDesc; VAR reply: NavReplyRecord; VAR dialogOptions: NavDialogOptions; eventProc: NavEventUPP; filterProc: NavObjectFilterUPP; callBackUD: NavCallBackUserData): OSErr;
  408. FUNCTION NavNewFolder(VAR defaultLocation: AEDesc; VAR reply: NavReplyRecord; VAR dialogOptions: NavDialogOptions; eventProc: NavEventUPP; callBackUD: NavCallBackUserData): OSErr;
  409. FUNCTION NavTranslateFile(VAR reply: NavReplyRecord; howToTranslate: NavTranslationOptions): OSErr;
  410. FUNCTION NavCompleteSave(VAR reply: NavReplyRecord; howToTranslate: NavTranslationOptions): OSErr;
  411. FUNCTION NavCustomControl(context: NavContext; selector: NavCustomControlMessage; parms: UNIV Ptr): OSErr;
  412. FUNCTION NavDisposeReply(VAR reply: NavReplyRecord): OSErr;
  413. FUNCTION NavServicesCanRun: BOOLEAN;
  414. {$ALIGN RESET}
  415. {$POP}
  416.  
  417. {$SETC UsingIncludes := Navigation.tIncludes}
  418.  
  419. {$ENDC} {__NAVIGATION__}
  420.  
  421. {$IFC NOT UsingIncludes}
  422.  END.
  423. {$ENDC}
  424.